import copy
import json


# 状态代码定义
status = {
    -1: "系统繁忙，请稍候再试",
    0: "请求成功",
    2: "已存在",
    3: "直购全程恒温红酒是Style会员特权，请先加入会员",
    30001: "权限不够",
    40006: "传入的参数不完整",
    40010: "缺少参数或参数错误",
    40011: "请求方法错误",
    50000: "系统异常",
    50001: "请求数据不正确",
    50002: "操作失败",
    60002: "请重试",
}
__ret_msg = {"code": "", "data": "", "msg": ""}


def ret_msg(code=0, error_message=None, data=None, is_dumps=True):
    """
    返回消息
    """
    msg = copy.copy(__ret_msg)
    msg["code"] = code
    if data is not None:
        msg["data"] = data
    if error_message:
        msg["msg"] = error_message
    else:
        msg["msg"] = status[code]
    if is_dumps:
        return json.dumps(msg, ensure_ascii=False)
    else:
        return msg


# 支付状态
class PayStatus:
    NOT_PAY = 0  # 待支付
    SUCCESS = 1  # 已支付
    REFUND = 2  # 已退款


# 支付方式
class PayType:
    UNKNOWN = 0  # 未知支付方式
    ALIPAY = 1  # 支付宝支付
    WECHAT = 2  # 微信支付
    UNION_PAY = 3  # 银联
    BALANCE = 4  # 纯余额支付
    COUPON = 5  # 纯优惠券支付


# 订单状态
class OrderStatus:
    UNKNOWN = 0  # 未知
    WAIT_PAY = 1  # 待支付
    WAIT_EXPRESS = 2  # 待发货
    WAIT_PICKUP = 21  # 待提货
    EXPRESSED = 3  # 已发货
    CHECK = 31  # 审核中
    RECEIVED = 32  # 已收货
    AFTER_SALE = 33  # 售后中
    COMPLETE = 4  # 完成
    INVALID = 5  # 失效
    REFUND = 6  # 已退款
    WAIT_VALID = 7  # 待生效


# 订单类型
class OrderType:
    NORMAL = 1  # 普通订单
    GIFT = 2  # 礼品订单
    MEMBER = 3  # 加盟费
    BARGAIN_PRICE = 4  # 特惠订单
    MEAL_DEDUCTION = 5  # 餐费抵扣订单
    GIFT_CARD = 6  # 礼品卡激活订单
    NEW_GIFT = 7  # 礼品卡礼品领取订单
    FREE_CARD = 8  # 体验卡餐费买单订单
    PINGUI = 9  # 存酒订单/订货订单
    PINQU = 10  # 取酒订单
    TIYAN = 11  # 体验订单
    DISTRIBUTOR = 12  # 经销商订单/合伙人内供价订单
    TRIAL = 13  # 样品订单（试饮功能）
    BAR = 14  # 小酒馆订单
    PICKUP_IN_STORE = 15  # 门店自提订单


# 订单配送类型
class OrderShipType:
    EXPRESS = 0  # 快递物流
    IN_STORE = 1  # 店内消费
    SELF_TAKE = 2  # 店内自提
    OUT_GOING = 3  # 门店外送
    DELEGATE = 4  # 平台代发


# 提现方式
class CashMethod:
    BANK_CARD = 0  # 线下转账
    ALIPAY = 1  # 支付宝
    WECHAT = 2  # 微信钱包
    UNION_PAY = 3  # 银联
    BALANCE = 4  # 思达尔余额
    COUPON = 5  # 优惠券


# 合伙人类型
class AgencyType:
    NORMAL = 0  # 初级合伙人
    PROFESSIONAL = 1  # 高级合伙人
    CAREER = 2  # 事业合伙人
    STORE = 3  # 商家
    CLERK = 4  # 店员
    SALES = 5  # 业务员
    SUPPLIER = 6  # 供应商


# 商品状态
class GoodsStatus:
    OFF_SHELF = 0  # 下架
    ON_SHELF = 1  # 上架


# 分润类型
class BenefitType:
    UNKNOWN = 0  # 平台
    DIFFER = 1  # 会员差价（非会员订单的非会员价和会员价的差价部分，只有具有专业合伙人身份的人才有）
    PARENT = 2  # 业务佣金 （作为直接合伙人的提成）
    CAREER = 3  # 领导津贴 （作为事业合伙人每个订单的提成）
    INVITE_PARENT = 4  # 主管津贴 （作为直接合伙人的上级获得的提成）
    INVITE_CAREER = 5  # 上级领导津贴 （作为事业合伙人的上级获得的提成）
    # 新增超级事业部分润类型 - 20200702
    SUPER_CAREER = 6  # 超级事业部分润
    STORE_FREECARD = 7  # 体验卡买单代收餐费/小酒馆销售收入/门店订单收入
    SUPPLIER = 8  # 支付供应商的金额

    # 以下新增分润类型只做计算用，分润记录暂时还按上面的分类，注意：同一订单，同一合伙人，同一的分润类型要唯一。 20190801
    INVITE_INVITE_PARENT = 9  # 主管津贴 （作为直接合伙人的推荐人获得的提成）-- 其实推荐人就是上线，永远不存在单纯的邀请关系的

    # 新增线上分润类型 - 20190416
    NEW_PARTNER = 11  # 商家推荐人线上分润
    INVITE_NEW_PARTNER = 12  # 引荐商家推荐人线上分润
    INVESTOR = 13  # 投资方线上分润 ***已存数据库***
    INVITE_INVESTOR = 14  # 投资方上级线上分润 ***已存数据库***
    STORE = 15  # 商家线上分润 ***已存数据库***
    INVITE_STORE = 16  # 引荐商家线上分润
    INVITE_INVITE_STORE = 17  # 商家推荐人上级线上分润
    CLERK = 18  # 服务员线上分润
    INVITE_CLERK = 19  # 服务员上级线上分润

    # 新增线下分润类型 - lijim 20190416
    INVESTOR_OFFLINE = 20  # 投资方线下分润
    INVITE_INVESTOR_OFFLINE = 21  # 投资方上级线下分润
    STORE_OFFLINE = 22  # 商家线下分润
    INVITE_STORE_OFFLINE = 23  # 引荐商家线下分润
    INVITE_INVITE_STORE_OFFLINE = 24  # 商家推荐人上级线下分润
    CLERK_OFFLINE = 25  # 服务员线下分润
    INVITE_CLERK_OFFLINE = 26  # 服务员上级线下分润
